const { execSync } = require('child_process');
const path = require('path');
const fs = require('fs');

// 确保dist-electron目录存在
const distElectronDir = path.join(__dirname, '..', 'dist-electron');
if (!fs.existsSync(distElectronDir)) {
  fs.mkdirSync(distElectronDir, { recursive: true });
}

// 复制preload.js文件到dist-electron目录（先复制，确保即使编译失败也有最新的preload.js）
const preloadSrc = path.join(__dirname, '..', 'src', 'electron', 'preload.js');
const preloadDest = path.join(distElectronDir, 'preload.js');
try {
  fs.copyFileSync(preloadSrc, preloadDest);
  console.log('✅ preload.js文件已复制到dist-electron目录');
} catch (copyError) {
  console.error('❌ 复制preload.js文件失败:', copyError);
}

// 编译Electron主进程代码
try {
  console.log('编译Electron主进程代码...');
  console.log('源文件路径:', path.join(__dirname, '..', 'src', 'electron', 'main.ts'));
  console.log('输出目录:', distElectronDir);
  
  // 使用更直接的编译命令，显式指定输入和输出
  execSync('npx tsc --target ES2020 --module CommonJS --outDir dist-electron --esModuleInterop src/electron/main.ts', { stdio: 'inherit' });
  
  // 检查输出文件是否生成
  const mainJsPath = path.join(distElectronDir, 'main.js');
  if (fs.existsSync(mainJsPath)) {
    console.log('✅ main.js文件已成功生成！');
    console.log('文件大小:', fs.statSync(mainJsPath).size, 'bytes');
    
    // 再次复制preload.js确保是最新版本
    try {
      fs.copyFileSync(preloadSrc, preloadDest);
      console.log('✅ 再次确认preload.js文件已更新到最新版本');
    } catch (copyError) {
      console.error('❌ 再次复制preload.js文件失败:', copyError);
    }
  } else {
    console.log('❌ main.js文件未生成！');
    console.log('dist-electron目录内容:', fs.readdirSync(distElectronDir));
  }
  
  console.log('Electron主进程代码编译完成！');
} catch (error) {
  console.error('编译Electron主进程代码失败:', error);
  process.exit(1);
}